Skip to content

refactor: Refactor remaining controllers to remove duplicate messenger types#42853

Merged
Mrtenz merged 2 commits into
mainfrom
mrtenz/messenger-types
May 27, 2026
Merged

refactor: Refactor remaining controllers to remove duplicate messenger types#42853
Mrtenz merged 2 commits into
mainfrom
mrtenz/messenger-types

Conversation

@Mrtenz
Copy link
Copy Markdown
Member

@Mrtenz Mrtenz commented May 21, 2026

Description

This refactors all remaining messenger client init files to do the following:

  • Remove duplicated messenger type.
  • Consistently declare messenger and remove the need for generics.
  • Update imports for local duplicated messengers to messengers exported by packages directly.

https://consensyssoftware.atlassian.net/browse/WPC-950

Changelog

CHANGELOG entry:

Related issues

Fixes:

Manual testing steps

  1. Go to this page...

Screenshots/Recordings

Before

After

Pre-merge author checklist

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

Note

Low Risk
Large but mechanical typing/import refactor across init and messenger factories; runtime delegate behavior is intended unchanged, with compile-time risk if delegated actions diverge from package messenger definitions.

Overview
This PR finishes the messenger-client-init cleanup by sourcing controller messenger types from their owning packages (or local controllers where applicable) instead of duplicating ReturnType<typeof get*Messenger> aliases under messengers/.

Init modules (*-init.ts / tests) now import *ControllerMessenger next to the controller from @metamask/* (e.g. assets, accounts, keyring, multichain). Messenger factories use MessengerActions / MessengerEvents on RootMessenger, construct messengers with the non-generic new Messenger({ namespace, parent }), and return the package-defined messenger type while keeping existing delegate wiring. Barrel files drop re-exports of controller messenger types and keep only init messenger types where still defined locally.

Notable renames/imports: CurrencyRateMessenger replaces the local CurrencyRateControllerMessenger name; InstitutionalSnapControllerMessenger is imported from the extension controller module. A few spots still use extension-specific messenger shapes (e.g. PermissionController, PerpsController) with TODOs where the package type is narrower than runtime delegation.

Reviewed by Cursor Bugbot for commit 06d6126. Bugbot is set up for automated code reviews on this repo. Configure here.

@Mrtenz Mrtenz added the no-changelog no-changelog Indicates no external facing user changes, therefore no changelog documentation needed label May 21, 2026
@metamaskbot metamaskbot added the team-core-platform Core Platform team label May 21, 2026
@Mrtenz Mrtenz changed the title Refactor remaining controllers to remove duplicate messenger types refactor: Refactor remaining controllers to remove duplicate messenger types May 21, 2026
@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 Bot commented May 21, 2026

Builds ready [23844f4]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 11 pass · 🟡 13 warn · 🔴 0 fail)

Baseline (latest main): 51036da | Date: 5/2/2026 | Pipeline: 26223320709 | Baseline logs

Interaction Benchmarks · Samples: 5
Benchmarkchrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]
confirmTx
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
bridgeUserActions
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: -77%
  • loadNewAccount/total: -77%
  • bridgeUserActions/bridge_load_page: -35%
  • bridgeUserActions/bridge_load_asset_picker: -63%
  • bridgeUserActions/bridge_search_token: -31%
  • bridgeUserActions/total: -38%
  • loadNewAccount/load_new_account: -49%
  • loadNewAccount/total: -49%
  • bridgeUserActions/bridge_load_page: +15%
  • bridgeUserActions/bridge_load_asset_picker: -18%
  • bridgeUserActions/bridge_search_token: -30%
  • bridgeUserActions/total: -14%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 loadNewAccount/FCP: p75 1.9s
  • 🟡 confirmTx/FCP: p75 1.9s
  • 🟡 bridgeUserActions/FCP: p75 1.9s
  • 🟡 loadNewAccount/INP: p75 216ms
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -23%
  • startupStandardHome/load: -19%
  • startupStandardHome/domContentLoaded: -18%
  • startupStandardHome/firstPaint: -47%
  • startupStandardHome/backgroundConnect: -43%
  • startupStandardHome/firstReactRender: -22%
  • startupStandardHome/loadScripts: -19%
  • startupStandardHome/numNetworkReqs: -29%
  • startupStandardHome/load: +11%
  • startupStandardHome/domContentLoaded: +11%
  • startupStandardHome/domInteractive: -35%
  • startupStandardHome/backgroundConnect: +16%
  • startupStandardHome/firstReactRender: +17%
  • startupStandardHome/initialActions: +20%
  • startupStandardHome/loadScripts: +11%
  • startupStandardHome/setupStore: -47%
  • startupStandardHome/numNetworkReqs: -21%
  • startupPowerUserHome/uiStartup: -44%
  • startupPowerUserHome/domInteractive: -78%
  • startupPowerUserHome/backgroundConnect: -72%
  • startupPowerUserHome/setupStore: -87%
  • startupPowerUserHome/numNetworkReqs: -55%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 startupPowerUserHome/LCP: p75 2.9s
User Journey Benchmarks · Samples: 5 · mock API
Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
assetDetails
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]
solanaAssetDetails
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
importSrpHome
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
sendTransactions
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]
swap
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: -64%
  • onboardingImportWallet/pwFormToMetricsScreen: +572%
  • onboardingImportWallet/metricsToWalletReadyScreen: -28%
  • onboardingImportWallet/doneButtonToHomeScreen: -77%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: +29%
  • onboardingImportWallet/total: -46%
  • onboardingNewWallet/srpButtonToPwForm: -76%
  • onboardingNewWallet/createPwToRecoveryScreen: +1118%
  • onboardingNewWallet/skipBackupToMetricsScreen: -68%
  • onboardingNewWallet/doneButtonToAssetList: -43%
  • onboardingNewWallet/total: -36%
  • assetDetails/assetClickToPriceChart: -58%
  • assetDetails/total: -58%
  • solanaAssetDetails/assetClickToPriceChart: -76%
  • solanaAssetDetails/total: -76%
  • importSrpHome/loginToHomeScreen: -37%
  • importSrpHome/openAccountMenuAfterLogin: -85%
  • importSrpHome/homeAfterImportWithNewWallet: -69%
  • importSrpHome/total: -64%
  • swap/openSwapPageFromHome: -97%
  • swap/fetchAndDisplaySwapQuotes: +36%
  • swap/total: +12%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 assetDetails/INP: p75 240ms
  • 🟡 assetDetails/FCP: p75 1.8s
  • 🟡 solanaAssetDetails/FCP: p75 1.8s
  • 🟡 importSrpHome/FCP: p75 2.0s
  • 🟡 sendTransactions/INP: p75 232ms
  • 🟡 sendTransactions/FCP: p75 1.9s
  • 🟡 swap/FCP: p75 1.9s
  • 🟡 assetDetails/FCP: p75 1.8s
  • 🟡 sendTransactions/FCP: p75 1.9s
  • 🟡 swap/FCP: p75 1.9s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • dappPageLoad/pageLoadTime: +17%
Bundle size diffs [🚀 Bundle size reduced!]
  • background: 12 Bytes (0%)
  • ui: -1.69 KiB (-0.02%)
  • common: 20 Bytes (0%)

@Mrtenz Mrtenz marked this pull request as ready for review May 21, 2026 12:04
Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 23844f4. Configure here.

cryptodev-2s
cryptodev-2s previously approved these changes May 21, 2026
Copy link
Copy Markdown
Contributor

@mcmire mcmire left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like there are conflicts, but this otherwise looks good.

| SnapControllerGetPermittedSnapsAction
| SnapControllerInstallSnapsAction;

// TODO: Ideally we remove this type, but we request more permissions than
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good to know 👍🏻

@sonarqubecloud
Copy link
Copy Markdown

@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 Bot commented May 26, 2026

Builds ready [06d6126]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 22 pass · 🟡 2 warn · 🔴 0 fail)

Baseline (latest main): 51036da | Date: 5/2/2026 | Pipeline: 26445273609 | Baseline logs

Interaction Benchmarks · Samples: 5
Benchmarkchrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
confirmTx
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
bridgeUserActions
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: -80%
  • loadNewAccount/total: -80%
  • bridgeUserActions/bridge_load_page: -79%
  • bridgeUserActions/bridge_load_asset_picker: -76%
  • bridgeUserActions/bridge_search_token: -37%
  • bridgeUserActions/total: -52%
  • loadNewAccount/load_new_account: -33%
  • loadNewAccount/total: -33%
  • bridgeUserActions/bridge_load_page: -12%
  • bridgeUserActions/bridge_load_asset_picker: -19%
  • bridgeUserActions/bridge_search_token: -21%
  • bridgeUserActions/total: -25%
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -35%
  • startupStandardHome/load: -33%
  • startupStandardHome/domContentLoaded: -33%
  • startupStandardHome/domInteractive: -39%
  • startupStandardHome/firstPaint: -19%
  • startupStandardHome/backgroundConnect: -45%
  • startupStandardHome/loadScripts: -34%
  • startupStandardHome/numNetworkReqs: -50%
  • startupStandardHome/domInteractive: -55%
  • startupStandardHome/backgroundConnect: +15%
  • startupStandardHome/firstReactRender: +39%
  • startupStandardHome/initialActions: +20%
  • startupStandardHome/setupStore: -43%
  • startupStandardHome/numNetworkReqs: -21%
  • startupPowerUserHome/uiStartup: -43%
  • startupPowerUserHome/domInteractive: -74%
  • startupPowerUserHome/backgroundConnect: -72%
  • startupPowerUserHome/firstReactRender: +24%
  • startupPowerUserHome/setupStore: -83%
  • startupPowerUserHome/numNetworkReqs: -74%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 startupPowerUserHome/LCP: p75 3.0s
User Journey Benchmarks · Samples: 5 · mock API
Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🟡 [CI log]
🔴 cls
🟢 [CI log]
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
assetDetails
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
solanaAssetDetails
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
importSrpHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
sendTransactions
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
swap
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: -66%
  • onboardingImportWallet/confirmSrpToPwForm: -14%
  • onboardingImportWallet/pwFormToMetricsScreen: +485%
  • onboardingImportWallet/metricsToWalletReadyScreen: -35%
  • onboardingImportWallet/doneButtonToHomeScreen: -74%
  • onboardingImportWallet/total: -51%
  • onboardingNewWallet/srpButtonToPwForm: -76%
  • onboardingNewWallet/createPwToRecoveryScreen: +1158%
  • onboardingNewWallet/skipBackupToMetricsScreen: -62%
  • onboardingNewWallet/doneButtonToAssetList: -41%
  • onboardingNewWallet/total: -35%
  • assetDetails/assetClickToPriceChart: -57%
  • assetDetails/total: -57%
  • solanaAssetDetails/assetClickToPriceChart: -79%
  • solanaAssetDetails/total: -79%
  • importSrpHome/loginToHomeScreen: -41%
  • importSrpHome/openAccountMenuAfterLogin: -80%
  • importSrpHome/homeAfterImportWithNewWallet: -68%
  • importSrpHome/total: -64%
  • swap/openSwapPageFromHome: -96%
  • swap/fetchAndDisplaySwapQuotes: +36%
  • swap/total: +12%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🔴 onboardingImportWallet/CLS: p75 0.256
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • dappPageLoad/pageLoadTime: +16%
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 77 Bytes (0%)
  • ui: 6.06 KiB (0.06%)
  • common: 20 Bytes (0%)

@Mrtenz Mrtenz added this pull request to the merge queue May 27, 2026
Merged via the queue into main with commit 922e549 May 27, 2026
203 of 204 checks passed
@Mrtenz Mrtenz deleted the mrtenz/messenger-types branch May 27, 2026 10:22
@github-actions github-actions Bot locked and limited conversation to collaborators May 27, 2026
@metamaskbot metamaskbot added the release-13.34.0 Issue or pull request that will be included in release 13.34.0 label May 27, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

no-changelog no-changelog Indicates no external facing user changes, therefore no changelog documentation needed release-13.34.0 Issue or pull request that will be included in release 13.34.0 size-XL team-core-platform Core Platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants